/*
 * 文件描述：自定义音乐播放列表的适配器的头文件
 * 文件作用：声明自定义音乐播放列表适配器类musicListAdapter;
 *          声明音乐数据结构musicData
 * 文件创建时间：2017-4-3
 * 文件创建者：wsgalaxy@163.com
 * 文件最后修改时间：
 * 文件修改者：
 * 文件协议：GPL
 *
 */


#ifndef MUSICLISTADAPTER_H
#define MUSICLISTADAPTER_H

#include <QObject>
#include <QUrl>

#include "musicHandle.h"

//描述音乐文件的数据结构
class musicData : public QObject
{
    Q_OBJECT
public:
    QString name;   //音乐名字
    QString path;   //音乐文件路径
    int flag;       //该句柄在适配器中的唯一标记
    musicHandle *handle;
    musicData* next;    //指向下一个句柄

    musicData(QObject *parent = NULL);

    //public slots:

};


//音乐列表适配器类
class musicListAdapter : public QObject
{
    Q_OBJECT

private:
    int len;            //音乐文件句柄数量
    musicData* data;    //文件句柄链表
public:
    explicit musicListAdapter(QObject *parent = 0);

    //int remove(musicData* d);
    int append(musicData d);                //添加一个音乐句柄
    int append(QString name, QString path); //同上

    int getLen();           //返回句柄数量
    musicData *getData();   //返回链表头节点

    int refreshFlag();      //更新适配器中每个句柄的唯一标记

    //获取指定音乐的上一个/下一个音乐
    musicData* getNext(musicData* d);
    musicData* getPre(musicData * d);

signals:
    void dataChange();      //当适配器内数据发生改变时发出

public slots:
    int remove(musicData* d);       //从适配器中删除句柄
    int musicAddnew(QUrl file);     //往适配器中添加音乐

protected:

};

#endif // MUSICLISTADAPTER_H
